TX课堂

  • 青少年编程起航篇:欢迎进入编程的世界 换个角度看世界,欢迎来到编程的世界(19分钟) 02 青少年编程软件安装和第一个程序详解 2.1 青少年编程软件安装及设置详解(7分钟) 【资料】青少年编程软件安装包下载(exe,23.8MB) 2.2 第一个程序相关的单词(12分钟) 2.3 第一个程序的编写及注意事项(30分钟) 03 C++编程中的基本运算 3.1 C++算术运算(20分钟) 3.2 训练题:求周长面积、市场买鸡价格计算(15分钟) 04 C++变量的使用-让程序更灵活 4.1 什么是数学中的变量(17分钟) 4.2 C++中的变量定义和使用(25分钟) 4.3 训练题:时间换算、求正方形面积等问题(14分钟) 05 从键盘读入变量的值-让程序学会接收指令 5.1 从键盘读入变量的值(19分钟) 5.2 OJ在线判断题库的使用(25分钟) 5.3 如何保留小数位(20分钟) 5.4 训练题:多边形内角、圆周长面积等问题(21分钟) 06 拆位运算-算术运算综合应用 6.1 如何拆出整数的各个位(28分钟) 6.2 训练题:三位数各位求和、加密四位数等(22分钟) 07 双分支判断-一分为二看问题 7.1 双分支判断语法详解(23分钟) 7.2 训练题:冷饮价格、奇偶判断等问题(26分钟) 08 多分支判断-详细探讨一个问题的N个面 8.1 多分支判断语法详解(14分钟) 8.2 训练题:成绩判断、包装箱型号等问题(19分钟) 09 分支判断总结-对比学习,了解差异 9.1 多分支和多个if的区别(36分钟) 9.2 三个数由小到大排序(24分钟) 9.3 训练题:三位数最大数、三角形类别等(22分钟) 10 while循环-花谢花开就是循环 10.1 while循环基础知识详解(30分钟) 10.2 while循环习题训练(39分钟) 10.3 训练题:求1~n的积、含有3的自然数等(25分钟) 11 for循环-对比while学习循环的另一种形式 11.1 for循环基础知识详解(34分钟) 11.2 训练题:寻找反序列、雷劈数等问题(22分钟) 11.3 for和while的应用场景对比讲解(24分钟) 11.4 while实现韩信点兵(9分钟) 11.5 while实现短除法(18分钟) 12 程序调错-程序调错技巧总结 12.1 程序调错-语法错误的解决方法(15分钟) 12.2 逻辑调错-输出调试法(19分钟) 12.3 逻辑调错-单步调试法(19分钟) 12.4 逻辑调错-调错案例讲解(12分钟) 13 嵌套循环-循环中的循环 13.1 嵌套循环-入门案例(15分钟) 13.2 嵌套循环-看程序写输出(1)(16分钟) 13.3 嵌套循环-看程序写输出(2)(17分钟) 13.4 矩形,三角,平行四边形输出(24分钟) 13.5 循环中常见数列规律(10分钟) 13.6 嵌套循环输出正三角和倒三角(17分钟) 13.7 嵌套循环输出菱形和箭头(16分钟) 13.8 嵌套循环输出空心正三角、常见快捷键(17分钟) 14 穷举算法-逐一尝试法 14.1 穷举思想和鸡兔同笼问题(12分钟) 14.2 穷举解决:买公园门票问题(13分钟) 14.3 穷举解决:买小猫小狗问题(14分钟) 14.4 穷举解决:阿凡提的难题(9分钟) 14.5 嵌套循环穷举解决:百钱百鸡问题(18分钟) 14.6 嵌套循环穷举解决:兑换硬币问题(16分钟) 14.7 嵌套循环穷举解决:购买文具问题(10分钟) 15 数组-大量数据处理容器 15.1 数组的基础知识详解(21分钟) 15.2 数组实现:求总分,平均分问题(11分钟) 15.3 数组实现:考试成绩统计(19分钟) 15.4 数组实现:支撑数问题(13分钟) 15.5 数组实现:排除异形基因(8分钟) 15.6 数组实现:身高统计问题(11分钟) 15.7 数组找数-元素查找(19分钟) 15.8 数组找数-求最大最小数(19分钟) 15.9 数组元素移动-数组逆序(15分钟) 15.10 数组元素移动-数组元素删除(16分钟) 16 数组进阶问题-数组的深入讨论 16.1 数组元素移动-数组元素插入(15分钟) 16.2 数组元素移动-有序数组插入元素(18分钟) 16.3 数组元素排序(25分钟) 16.4 排序问题-数的排序(13分钟) 16.5 排序问题-语文成绩(6分钟) 16.6 排序问题-求中位数(14分钟) 16.7 数组存储运算结果-COUNT问题(16分钟) 16.8 数组存储运算结果-数字出现次数(15分钟) 16.9 数组存储运算结果-去除重复数字(23分钟) 16.10 数组存储运算结果-标记数组的用法(13分钟) 17 sqrt函数的应用-程序运行效率初步讨论 17.1 sqrt函数的基础知识(15分钟) 17.2 sqrt应用-完全平方数(8分钟) 17.3 sqrt应用-判断素数及程序运行效率讨论(23分钟) 17.4 sqrt应用-求因子和(9分钟) 18 自定义函数-代码复用,高效编程 18.1 自定义函数基础知识(21分钟) 18.2 自定义函数入门案例(16分钟) 18.3 有输入参数返回值的函数定义(21分钟) 18.4 变量的生命周期详解(16分钟) 18.5 函数应用-纯粹素数问题求解(24分钟) 18.6 函数应用-一个三位数问题求解(9分钟) 18.7 函数应用-亲密数对问题求解(16分钟) 18.8 函数应用-回文数个数问题求解(17分钟) 18.9 函数应用-哥德巴赫猜想问题求解(13分钟) 19 递归-函数的自我调用 19.1 递归基础知识讲解-求解等差数列(21分钟) 19.2 递归案例-求等比数列及阶乘问题(16分钟) 19.3 递归案例-兔子数量问题讨论递归的效率(33分钟) 19.4 递归应用-求S的值(6分钟) 19.5 递归应用-数列前n项求和(6分钟) 20 字符型-char类型及应用 20.1 字符型-字符类型的基础知识(21分钟) 20.2 字符型-大小写字母的转换及转义字符(13分钟) 20.3 字符型的应用-打印字母表(8分钟) 20.4 字符型的应用-打印字母三角(10分钟) 21 字符数组-存储字符的容器 21.1 字符数组基础-字符数组基础知识讲解(26分钟) 21.2 字符数组应用-统计字符个数(17分钟) 21.3 字符数组应用-数字和问题求解(8分钟) 21.4 字符数组应用-调换位置问题求解(13分钟) 21.5 字符数组应用-判断回文数(16分钟) 21.6 字符数组应用-统计字母出现次数(17分钟) 21.7 字符数组应用-国王的魔镜问题(20分钟) 22 字符数组进阶-字符数组问题深入讨论 22.1 词组缩写问题求解(18分钟) 22.2 字符串压缩问题求解(17分钟) 22.3 字符数组相关系统函数讲解(26分钟) 22.4 找英文句子中最长单词问题求解(22分钟) 22.5 我是第几个单词问题求解(20分钟) 22.6 a+b表达式求解问题(18分钟) 23 二维数组-存储数组的数组 23.1 二维数组的定义和遍历(18分钟) 23.2 二维数组应用-郭远摘苹果问题(12分钟) 23.3 二维数组应用-各个科目成绩的平均分(7分钟) 23.4 二维数组应用-杨辉三角问题(10分钟) 23.5 二维数组应用-图像相似度问题(8分钟) 24 二维数组进阶-二维数组矩阵及应用问题 24.1 矩阵问题-对角线(17分钟) 24.2 矩阵问题-数字走向(22分钟) 24.3 矩阵问题-斜角(21分钟) 24.4 矩阵问题-拐角(9分钟) 24.5 矩阵问题-有趣的数字图形(9分钟) 24.6 应用问题-遥控飞机争夺赛(18分钟) 24.7 应用问题-哥德巴赫猜想的所有解(17分钟) 24.8 应用问题-等比例缩放照片(20分钟)
    • 799
  • android
    11-14 04:28
    简介 该课程包含 C/C++ 基础和进阶、JNI 基础实战、数据结构和算法、智能识别、Linux 内核和音视频实战,是大家从中级到高级过渡的一个必经过程。 第一部分:入门 C 的基础、C++ 的基础和 JNI 基础,分析 JNIEnv 的实现原理,手写 Android 共享内存的序列化过程等等。 第二部分:深入 C 的进阶和 C++ 的进阶,分析内存四驱模型和项目开发模型,强化二级指针与多级指针,刨析 STL 的设计理念与算法等等。 第三部分:主讲数据结构和算法,这部分知识是面试的必备基础,同时也是为后面的智能识别与音视频开发做铺垫,我们不能只停留在 API 的调用阶段。数组、链表、栈、队列、二叉树、AVL 树、红黑树、哈夫曼编码、图、LeetCode 刷题等等。 第四部分:主讲 OpenCV 智能识别,首先带大家熟悉常用 API,其次带大家手写实现算法,最后带大家实战银行卡扫描,二维码检测,实现人脸美容,实时人脸识别等等。 第五部分:主讲 Linux 内核,Android 系统是基于 Linux 内核的,我们熟悉了 Linux 内核也就熟悉了 Android 底层。应用编译运行的工作过程,进程创建与进程管理,IPC 进程间通信,Binder 驱动的底层原理等等。 第六部分:主讲音视频开发,自己动手编译 FFmpeg,打造一款万能的音视频播放器,多线程队列解码播放,录制视频加背景音乐,OpenGL 渲染相机添加水印,H264 协议详解,Android 直播推拉流等等。 . ├── 01.NDK开发前奏 - x团参数加密和签名校验 │ ├── 01.怎么架构新项目.wmv │ ├── 02.加密算法介绍.wmv │ ├── 03.MD5参数加密实现.wmv │ ├── 04.APP签名校验.wmv │ └── 笔记和资源 │ ├── 01.NDK开发前奏 - x团参数加密和签名校验.mht │ └── NDK_Day01.rar ├── 03.NDK开发前奏 - 视频转码压缩 │ ├── 01.视频转码压缩介绍.wmv │ ├── 02.ffmpeg整合集成.wmv │ ├── 03.压缩回调处理.wmv │ └── 笔记和源码 │ └── NDK_Day03.rar ├── 05.NDK开发前奏 - 实现支付宝人脸识别功能 │ ├── 01.opencv 介绍和整合.wmv │ ├── 02.人脸识别实现的思路.wmv │ ├── 03.opencv图像灰度处理.wmv │ ├── 04.实现人脸识别.wmv │ └── 笔记和源码 │ ├── 05.NDK开发前奏 - 实现支付宝人脸识别功能.mht │ └── NDK_Day05.rar ├── 06.C基础 - 基本数据类型与指针入门 │ ├── 01.C开发的一些准备工作.wmv │ ├── 02.基本数据类型.wmv │ ├── 03.变量地址和指针变量.wmv │ ├── 04.通过指针变量修改值.wmv │ ├── 05.面试题讲解.wmv │ └── 笔记和源码 │ ├── 06.C基础 - 基本数据类型与指针入门.mht │ └── NDK_Day06.rar ├── 07.C基础 - 指针运算和函数指针 │ ├── 01.二级指针和多级指针 .wmv │ ├── 02.数组和数组指针.wmv │ ├── 03.指针循环遍历和赋值.wmv │ ├── 04.指针与数组的几种写法.wmv │ ├── 05.函数指针.wmv │ └── 源码和笔记 │ ├── NDK_Day07.rar │ └── 笔记.png ├── 08.C基础 - 动态开辟内存和字符串 │ ├── 01.上次内容回顾.wmv │ ├── 02.如何文档阅读.wmv │ ├── 03.静态内存开辟和动态内存开辟.wmv │ ├── 04.动态内存开辟的实用场景.wmv │ ├── 05.realloc和动态内存开启注意事项.wmv │ └── 源码和笔记 │ ├── 08.C基础 - 动态开辟内存和字符串.mht │ ├── C语言中文帮助文档.rar │ ├── NDK_Day08.rar │ ├── realloc.png │ ├── 函数指针.png │ └── 动态内存开辟.png ├── 09.C基础 - 字符串常见操作和指针练习 │ ├── 01.字符串长度.wmv │ ├── 02.字符串类型转换.wmv │ ├── 03.字符串比较.wmv │ ├── 04.字符串查找和拼接.wmv │ ├── 05.字符串截取和大小写转换.wmv │ └── 笔记和源码 │ ├── 09.C基础 - 字符串常见操作和指针练习.mht │ └── NDK_Day09.rar ├── 10.C基础 - 结构体联合体和枚举 │ ├── 01.字符串替换讲解.wmv │ ├── 02.结构体和结构体指针.wmv │ ├── 03.结构体数组.wmv │ ├── 04.字节对其和结构体大小计算.wmv │ ├── 05.联合体和枚举.wmv │ └── 笔记和源码 │ ├── 10.C基础 - 结构体联合体和枚举.mht │ └── NDK_Day10.rar ├── 11.C基础 - 文件操作 │ ├── 01.读取文本文件.wmv │ ├── 02.拷贝文件.wmv │ ├── 03.文件加解密和文件切割.wmv │ └── 笔记和源码 │ └── NDK_Day11.rar ├── 12.JNI 基础 - JNIEnv 的实现原理 │ ├── 01.JNI开发的一般流程.wmv │ ├── 02.详解 .h 头文件和实现文件.wmv │ ├── 03.JNIEnv的实现原理.wmv │ ├── 04.C 访问 Java 属性.wmv │ ├── 05.C 访问 Java 方法.wmv │ └── 笔记和源码 │ ├── 12.JNI 基础 - JNIEnv 的实现原理.mht │ ├── JNIEnv的原理和流程.png │ ├── NDK_Day12_Java.rar │ └── NDK_Day12_VS.rar ├── 13.JNI 基础 - Native 层构建 Java 对象 │ ├── 01.作业讲解.wmv │ ├── 02.常量指针和指针常量.wmv │ ├── 03.Native 层构建 Java 对象.wmv │ ├── 04.设置属性练习.wmv │ └── 笔记和源码 │ ├── 13.JNI 基础 - Native 层构建 Java 对象.mht │ ├── NDK_Day13_Java.rar │ └── NDK_Day13_VS.rar ├── 14.JNI 基础 - Android 共享内存的序列化过程 │ ├── 01.Java对象与C对象对应.wmv │ ├── 02.Parcel 源码解析.wmv │ ├── 03.自己动手实现内存共享.wmv │ ├── 04.共享内存面试题讲解.wmv │ └── 笔记和源码 │ ├── 14.JNI 基础 - Android 共享内存的序列化过程.mht │ ├── 1.png │ ├── NDK_Day14.rar │ └── 无标题.png ├── 15.JNI 基础 - 缓存策略和异常处理 │ ├── 01.数组的细节处理.wmv │ ├── 02.局部引用和全局引用.wmv │ ├── 03.静态缓存策略.wmv │ ├── 04.jni的异常处理.wmv │ └── 笔记和源码 │ ├── 15.JNI 基础 - 缓存策略和异常处理.mht │ ├── NDK_Day15_Java.rar │ └── NDK_Day15_VS.rar ├── 16.C进阶 - 内存四驱模型 │ ├── 01.数组参数传递.wmv │ ├── 02.数据类型剖析.wmv │ ├── 03.变量的本质.wmv │ ├── 04.内存四驱模型.wmv │ └── 笔记和源码 │ ├── 16.C进阶 - 内存四驱模型.mht │ └── NDK_Day16.rar ├── 17.C进阶 - 项目开发模型强化 │ ├── 01.内存四驱模型.wmv │ ├── 02.通过指针间接赋值的意义.wmv │ ├── 03.野指针和 NULL 地址.wmv │ ├── 04.定义字符串的几种区别.wmv │ ├── 05.项目开发模型强化.wmv │ └── 笔记和源码 │ ├── 01.间接赋值.png │ ├── 02.通过指针间接赋值.png │ ├── 03.野指针.png │ ├── 04.字符串的不同之处.png │ ├── 17.C进阶 - 项目开发模型强化.mht │ └── NDK_Day17.rar ├── 18.C进阶 - 二级指针和多级指针 │ ├── 01.指针使用的注意事项.wmv │ ├── 02.二级指针的内存模式.wmv │ ├── 03.多级指针.wmv │ └── 笔记和源码 │ ├── 01.NULL地址的强化.png │ ├── 02.指针数组和二级指针.png │ ├── 03.二维数组的第三种定义方式.png │ └── 18.C进阶 - 二级指针和多级指针.mht ├── 19.C进阶 - 结构体中的高级话题 │ ├── 01.结构体赋值操作.wmv │ ├── 02.深拷贝和浅拷贝.wmv │ ├── 03.结构体的偏移量强化.wmv │ └── 笔记和源码 │ ├── 19.C进阶 - 结构体中的高级话题.mht │ └── 结构体套指针.png ├── 20.C++基础 - 引用和函数重载 │ ├── 01.c 和 c++ 的区别.wmv │ ├── 02.常量.wmv │ ├── 03.引用和常量引用.wmv │ ├── 04.函数重载和默认参数.wmv │ ├── 05.类的初探.wmv │ └── 笔记和源码 │ ├── 20.C++基础 - 引用和函数重载.mht │ ├── NDK_Day20.rar │ └── 引用实例.png ├── 21.C++基础 - 构造函数、析构函数和拷贝构造函数 │ ├── 01.构造函数.wmv │ ├── 02.析构函数.wmv │ ├── 03.malloc、free、new、delete 区别.wmv │ ├── 04.拷贝构造函数和调用场景.wmv │ └── 笔记和源码 │ ├── 01.指针赋值.png │ ├── 02.拷贝构造函数赋值.png │ ├── 21.C++基础 - 构造函数、析构函数和拷贝构造函数.mht │ └── NDK_Day21.rar ├── 22.C++基础 - 对象大小和友元类 │ ├── 01.可变参数.wmv │ ├── 02.static 关键字.wmv │ ├── 03.const 修饰函数.wmv │ ├── 04.友元函数和类.wmv │ └── 源码和笔记 │ ├── 21.C++基础 - 对象大小和友元类.mht │ └── NDK_Day22.rar ├── 23.C++基础 - 操作符重载和类的继承 │ ├── 01.加减运算符重载.wmv │ ├── 02.条件运算符和括号运算符重载.wmv │ ├── 03.类对象的继承.wmv │ └── 笔记和源码 │ ├── 23.C++基础 - 操作符重载和类的继承.mht │ └── NDK_Day23.rar ├── 24.C++基础 - 虚继承、虚函数和模板函数 │ ├── 01.属性初始化.wmv │ ├── 02.虚继承.wmv │ ├── 03.C++中的多态.wmv │ ├── 04.抽象类和接口.wmv │ ├── 05.模板函数.wmv │ └── 笔记和源码 │ ├── 24.C++基础 - 虚继承、虚函数和模板函数.mht │ └── NDK_Day24.rar ├── 25.C++基础 - 实现 Native 层的 ArrayList │ ├── 01.编译流程.wmv │ ├── 02.模板类.wmv │ ├── 03.ArrayList源码分析.wmv │ ├── 04.实现Native层的ArrayList.wmv │ └── 笔记和源码 │ ├── 25.C++基础 - 实现 Native 层的 ArrayList.mht │ ├── NDK_Day25_AS.rar │ └── NDK_Day25_VS.rar ├── 26.C++基础 - 异常处理和字符串操作 │ ├── 01.类型转换.wmv │ ├── 02.实现System.arrayCopy.wmv │ ├── 03.c++中的异常处理.wmv │ ├── 04.字符串操作.wmv │ └── 源码和笔记 │ ├── 26.C++基础 - 异常处理和字符串操作.mht │ ├── NDK_Day26_AS.rar │ └── NDK_Day26_VS.rar ├── 27.C++进阶 - Const关键字增强和引用的本质剖析 │ ├── 01.string字符串的常见操作.wmv │ ├── 02.const 关键增强字.wmv │ ├── 03.引用的加强.wmv │ ├── 04.NDK 异常处理增强.wmv │ └── 笔记和源码 │ ├── NDK_Day27_VS.rar │ └── c++中的常量.png ├── 28.C++进阶 - STL 容器的基本介绍和使用 │ ├── 01.vector和stack容器.wmv │ ├── 02.queue基本操作.wmv │ ├── 03.list增删改查.wmv │ ├── 04.谓词和函数对象.wmv │ └── 笔记和源码 │ ├── 28.C++进阶 - STL 容器的基本介绍和使用.mht │ └── NDK_Day28.rar ├── 29.C++进阶 - STL 函数对象和谓词 │ ├── 01.map容器介绍和使用.wmv │ ├── 02.multimap容器介绍和使用.wmv │ ├── 03.容器对象拷贝构造函数.wmv │ ├── 04.一元谓词和二元谓词.wmv │ └── 笔记和源码 │ ├── 29.C++进阶 - STL 函数对象和谓词.mht │ └── NDK_Day29_VS.rar ├── 30.C++进阶 - STL算法设计理念分析 │ ├── 01.预定义函数对象.wmv │ ├── 02.函数适配器.wmv │ ├── 03.STL算法设计理念分析.wmv │ ├── 04.源码阅读的经验总结.wmv │ └── 源码和笔记 │ ├── 30.C++进阶 - STL算法设计理念分析.mht │ └── NDK_Day30_VS.rar ├── 31.Android智能识别 - 银行卡区域裁剪 │ ├── 01.银行卡识别的思路分析.wmv │ ├── 02.bitmap和mat转换.wmv │ ├── 03.截取银行卡区域.wmv │ └── 源码和资源 │ ├── 31.Android智能识别 - 银行卡区域裁剪.mht │ └── NDK_Day31_AS.rar ├── 32.Android智能识别 - 银行卡数字识别 │ ├── 01.裁剪银行卡区域.wmv │ ├── 02.过滤填充干扰区域.wmv │ ├── 03.分割获取银行卡数字.wmv │ ├── 04.字符串粘连处理.wmv │ └── 笔记和源码 │ ├── 32.Android智能识别 - 银行卡数字识别.mht │ └── NDK_Day31_AS.rar ├── 33.数据结构算法 - 数组与链表 │ ├── 01.数据结构算法基本概念.wmv │ ├── 02.时间复杂度和空间复杂度.wmv │ ├── 03.数组与链表源码分析.wmv │ └── 笔记和源码 │ ├── 33. 数据结构算法 - 数组与链表.mht │ └── NDK_Day33_VS.rar ├── 34.数据结构算法 - 单链表与双向链表 │ ├── 01.单链表.wmv │ ├── 02.时间复杂度优化.wmv │ ├── 03.双向链表.wmv │ └── 笔记和源码 │ ├── 34. 数据结构算法 - 单链表与双向链表.mht │ └── NDK_Day34_AS.rar ├── 35.数据结构算法 - 冒泡、选择和插入排序 │ ├── 01.上次作业讲解.wmv │ ├── 02.冒泡排序.wmv │ ├── 03.方法宏定义.wmv │ ├── 04.时间复杂度求解.wmv │ ├── 05.选择排序.wmv │ ├── 06.性能测试比较分析.wmv │ └── 笔记和源码 │ ├── 35. 数据结构算法 - 冒泡、选择和插入排序.mht │ ├── NDK_Day35_AS.rar │ └── 希尔排序.png ├── 36.数据结构算法 - 冒泡优化、插入和希尔排序 │ ├── 01.ndk错误日志调试.wmv │ ├── 02.冒泡排序优化.wmv │ ├── 03.插入排序.wmv │ ├── 04.希尔排序.wmv │ └── 源码和笔记 │ ├── 36. 数据结构算法 - 冒泡优化、插入和希尔排序.mht │ └── NDK_Day36_AS.rar ├── 37.数据结构算法 - 归并排序和快速排序 │ ├── 01.上次遗留问题解决.wmv │ ├── 02.稳定排序.wmv │ ├── 03.归并排序.wmv │ ├── 04.归并优化和时间复杂度求解.wmv │ ├── 05.快速排序.wmv │ ├── 06.快速排序优化.wmv │ └── 笔记和源码 │ ├── NDK_Day36_AS.rar │ ├── merge数组.png │ └── 归并排序.png ├── 38.数据结构算法 - 递归和栈结构 │ ├── 01.循环和递归.wmv │ ├── 02.汉诺塔问题.wmv │ ├── 03.数组实现栈.wmv │ ├── 04.链表实现栈.wmv │ └── 源码和笔记 │ ├── 38. 数据结构算法 - 递归和栈结构.mht │ └── NDK_Day38_AS.rar ├── 39.数据结构算法 - 队列和双向队列 │ ├── 01.汉诺塔问题求解.wmv │ ├── 02.位运算.wmv │ ├── 03.数组实现队列.wmv │ └── 笔记和源码 │ ├── 39. 数据结构算法 - 队列和双向队列.mht │ └── NDK_Day39_AS.rar ├── 40.数据结构算法 - HashMap 源码分析和手写实现 │ ├── 01.HashMap源码实现分析.wmv │ ├── 02.hashCode底层实现分析.wmv │ ├── 03.==、equals和hashCode.wmv │ ├── 04.手写HashMap扩容.wmv │ └── 源码和笔记 │ ├── 40. HashMap 源码分析和手写实现.mht │ └── NDK_Day40.rar ├── 41.数据结构算法 - 树和二叉树 │ ├── 01.树的定义和分类.wmv │ ├── 02.树的存储.wmv │ ├── 03.树、森林与二叉树之间互转.wmv │ └── 笔记和源码 │ ├── 41. 树和二叉树.mht │ ├── NDK_Day41.rar │ ├── 二叉树转树.png │ ├── 树转二叉树.png │ └── 森林转二叉树.png ├── 42.数据结构算法 - 二叉树常见操作 │ ├── 01.二叉树的分类.wmv │ ├── 02.二叉树的遍历.wmv │ ├── 03.平衡二叉树.wmv │ └── 笔记和源码 │ ├── 42. 数据结构算法 - 二叉树常用操作.mht │ ├── NDK_Day42.rar │ └── 二叉树遍历.png ├── 43.数据结构算法 - 优先级队列和堆排序 │ ├── 01.二叉树序列化和反序列.wmv │ ├── 02.优先级队列和堆排序.wmv │ └── 笔记和源码 │ ├── 43. 数据结构算法 - 优先级队列和堆排序.mht │ ├── NDK_Day34_AS.rar │ └── 二叉树的序列化和反序列化.png ├── 44.数据结构算法 - 二叉搜索树 │ ├── 01.二叉搜索树-新增.wmv │ ├── 02.二叉搜索树-查找.wmv │ ├── 03.二叉搜索树 - 删除.wmv │ └── 笔记和源码 │ ├── 44. 数据结构算法 - 二叉搜索树.mht │ └── NDK_Day44.rar ├── 45.数据结构算法 - AVL 树 │ ├── 01.为什么要引入 AVL 树.wmv │ ├── 02.AVL树 - 旋转调整.wmv │ ├── 03.AVL树 - 插入调整.wmv │ └── 笔记和源码 │ ├── NDK_Day45.rar │ ├── 先右旋在左旋.png │ ├── 先左旋再右旋.png │ ├── 右旋.png │ └── 左旋.png ├── 46.数据结构算法 - AVL 树的新增和移除 │ ├── 01.新增操作.wmv │ ├── 02.删除操作.wmv │ └── 源码和笔记 │ ├── 46. 数据结构算法 - AVL 树的新增和移除.mht │ └── NDK_Day46.rar ├── 47.数据结构算法 - 红黑树上篇 │ ├── 01.红黑树和性质.wmv │ ├── 02.红黑树新增逻辑讲解.wmv │ ├── 03.红黑树新增代码实现.wmv │ └── 笔记和源码 │ ├── NDK_Day47.rar │ └── aaa.png ├── 48.数据结构算法 - 红黑树下篇 │ ├── 01.红黑树和 AVL 树的算法复杂度分析.wmv │ ├── 02.红黑树新增理解.wmv │ ├── 03.红黑树的删除操作.wmv │ └── 笔记和源码 │ ├── 48. 数据结构算法 - 红黑树下篇.mht │ └── NDK_Day48.rar ├── 49.数据结构算法 - 哈夫曼编码 │ ├── 01.定长编码和变成编码.wmv │ ├── 02.霍夫曼树的构建过程.wmv │ ├── 03.代码实现霍夫曼编码和解码.wmv │ └── 源码和笔记 │ ├── 49. 数据结构算法 - 哈夫曼编码.mht │ ├── NDK_Day48(修正版).rar │ └── NDK_Day49.rar ├── 50.数据结构算法 - 图 │ ├── 01.Java 多线程的内存模型.wmv │ ├── 02.synchronized 的底层实现原理.wmv │ ├── 03.图的基础定义.wmv │ └── 源码和笔记 │ ├── 01.霍夫曼编码.png │ ├── 02.多线操作HashMap.png │ ├── 03.synchronized底层实现原理.png │ ├── 04.无向边存储方式.png │ ├── 05.有向边存储方式.png │ └── 50. 数据结构算法 - 图.mht ├── 51.数据结构算法 - 图的最小生成树和最短路径 │ ├── 01.邻接表和十字链表.wmv │ ├── 02.图的广度和深度优先遍历.wmv │ ├── 03.最小生成树.wmv │ └── 笔记和源码 │ ├── 51. 数据结构算法 - 图的最小生成树和最短路径.mht │ ├── NDK_Day51.rar │ ├── 十字链表.png │ ├── 广度优先遍历.png │ └── 邻接表.png ├── 52.LeetCode 刷题 - 数字篇 │ ├── 01.迪杰斯特拉算法.wmv │ ├── 02.toSum.wmv │ ├── 03.string to integer.wmv │ └── 笔记和源码 │ ├── 52. LeetCode 刷题 - 数字篇.mht │ └── NDK_Day52.rar ├── 53.LeetCode 刷题 - 位运算 │ ├── 01.Reverse Integer.wmv │ ├── 02.位运算.wmv │ ├── 03.Power of Two.wmv │ ├── 04.Power of Three.wmv │ ├── 05.Number of 1 Bits.wmv │ ├── 06.Factorial Trailing Zeroes.wmv │ └── 笔记和源码 │ ├── 53. LeetCode 刷题 - 位运算.mht │ └── 位运算.png ├── 54.LeetCode 刷题 - 树 │ ├── 01.Binary Tree Inorder Traversal.wmv │ ├── 02.Path Sum.wmv │ ├── 03.Maximum Depth of Binary Tree.wmv │ └── 笔记和源码 │ └── 54. LeetCode 刷题 - 树.mht ├── 55.LeetCode 刷题 - 常用算法思想 │ ├── 01.贪心算法思想 .wmv │ ├── 02.回溯算法思想.wmv │ ├── 03.动态规划算法思想.wmv │ └── 笔记和源码 │ └── 55. LeetCode 刷题 - 常用算法思想.mht ├── 56.OpenCV - 安装和简介 │ ├── 01.OpenCV 安装.wmv │ ├── 02.操作指针转灰度图.wmv │ └── 笔记和源码 │ ├── 56. OpenCV - 安装和简介.mht │ ├── NDK_Day56.rar │ └── opencv需要的dll文件 │ ├── concrt140d.dll │ ├── msvcp140d.dll │ ├── opencv_ffmpeg310_64.dll │ ├── opencv_world340d.dll │ ├── opencv_world340.dll │ └── ucrtbased.dll ├── 57.OpenCV - Android 滤镜效果处理 │ ├── 01.ColorMatrix 矩阵运算.wmv │ ├── 02.Java Bitmap 获取像素操作.wmv │ ├── 03.Native 层操作像素指针.wmv │ ├── 04.ARGB_8888 和 RGB_565.wmv │ └── 笔记和源码 │ ├── 57. OpenCV - Android 滤镜效果处理.mht │ └── NDK_Day57.rar ├── 58.OpenCV - Mat 对象与图像混合 │ ├── 01.细讲 Mat 对象.wmv │ ├── 02.像素获取和修改.wmv │ ├── 03.图像混合.wmv │ ├── 04.饱和度、亮度和对比度.wmv │ └── 笔记和源码 │ ├── 58. OpenCV - Mat 对象与图像混合.mht │ └── NDK_Day58_VS.rar ├── 59.OpenCV - 图像的绘制与卷积操作 │ ├── 01.inline 内联函数.wmv │ ├── 02.绘制形状和文字.wmv │ ├── 03.图像的卷积操作.wmv │ └── 笔记和源码 │ ├── 59. OpenCV - 图像的绘制与模糊.mht │ ├── NDK_Day59_VS.rar │ └── 卷积操作.png ├── 60.Android 性能优化实战 - 界面卡顿 │ ├── 01.APP项目介绍.wmv │ ├── 02.Android Device Monitor 介绍.wmv │ ├── 03.高斯模糊和均值模糊.wmv │ ├── 04.Glide源码分析.wmv │ ├── 05.LruCache的正确使用姿势.wmv │ └── 笔记和源码 │ ├── 60. Android 性能优化实战 - 界面卡顿.mht │ ├── NDK_Day60_VS.rar │ └── 高斯模糊和均值模糊.png ├── 61.Android 性能优化实战 - Bitmap 全面解析 │ ├── 01.Bitmap 到底占多大的内存.wmv │ ├── 02.Bitmap 的内存开辟.wmv │ ├── 03.Bitmap 的内存销毁和复用.wmv │ └── 笔记和源码 │ ├── 61. Android 性能优化实战 - Bitmap 全面解析.mht │ ├── Native层解析 Bitmap 的流程.png │ └── dp、dip、dpi、px .png ├── 62.OpenCV - 实现图片的美容效果 │ ├── 01.Bitmap 的内存优化与适配.wmv │ ├── 02.线上 OOM 内存 dump 搜集.wmv │ ├── 03.实现图片的美容效果.wmv │ ├── 04.腐蚀与膨胀.wmv │ └── 笔记和源码 │ ├── 62. OpenCV - 实现图片的美容效果.mht │ └── NDK_Day62.rar ├── 63.OpenCV - 验证码自动识别 │ ├── 01.形态学操作.wmv │ ├── 02.过滤验证码的干扰.wmv │ ├── 03.上采样与降采样.wmv │ └── 笔记和源码 │ ├── 63. OpenCV - 验证码自动识别.mht │ └── NDK_Day63_VS.rar ├── 64.OpenCV - 自定义线性滤波 │ ├── 01.处理边缘类型.wmv │ ├── 02.自定义线性滤波.wmv │ ├── 03.图像二值化.wmv │ └── 笔记和源码 │ ├── 64. OpenCV - 自定义线性滤波.mht │ ├── NDK_Day64_VS.rar │ ├── 卷积操作.png │ └── 自定义算子.png ├── 65.OpenCV - 图像边缘检测 │ ├── 01.Sobel 算子.wmv │ ├── 02.Laplance 算子.wmv │ ├── 03.Canny 边缘检测.wmv │ └── 笔记和源码 │ ├── 65. OpenCV - 图像边缘检测.mht │ ├── NDK_Day65_VS.rar │ ├── sobel 合并.png │ └── 微积分求导.png ├── 66.OpenCV - 霍夫检测与重映射 │ ├── 01.霍夫直线检测.wmv │ ├── 02.霍夫圆检测.wmv │ ├── 03.重映射.wmv │ └── 笔记和源码 │ ├── 66. OpenCV - 霍夫检测与重映射.mht │ ├── NDK_Day66_VS.rar │ ├── 霍夫圆检测.png │ └── 霍夫直线检测.png ├── 67.OpenCV - 色彩空间与直方图 │ ├── 01. RGB 与 HSV.wmv │ ├── 02.直方图均衡化.wmv │ ├── 03.直方图计算绘制.wmv │ └── 笔记和源码 │ ├── 1_01.jpg │ ├── 1_02.jpg │ ├── 1_03.jpg │ ├── 2_01.jpg │ ├── 2_02.png │ ├── 2_03.jpg │ ├── 2_04.png │ ├── 2_05.jpg │ └── NDK_Day67_VS.rar ├── 68.OpenCV - 直方图比较和匹配 │ ├── 01. 直方图比较.wmv │ ├── 02.直方图的反向投射和模板匹配.wmv │ └── 笔记和源码 │ ├── 68. OpenCV - 直方图比较和匹配.mht │ └── NDK_Day68_VS.rar ├── 69.OpenCV - 轮廓查找与图像分水岭 │ ├── 01.银行卡轮廓查找与绘制.wmv │ ├── 02.图形矩和图像分水岭切割.wmv │ └── 源码和笔记 │ ├── 69. OpenCV - 轮廓查找与图像分水岭.mht │ └── NDK_Day69_VS.rar ├── 70.OpenCV - 手写 QQ 说说图片效果 │ ├── 01.Bitmap 的解封装与编解码 .wmv │ ├── 02. 镜像和逆世界效果.wmv │ ├── 03.浮雕和马赛克效果.wmv │ ├── 04.毛玻璃效果.wmv │ ├── 05.油画效果和速度油画.wmv │ └── 源码和笔记 │ ├── 70. OpenCV - 手写 QQ 说说图片效果.mht │ ├── NDK_Day70_AS.rar │ ├── 图形图像处理.png │ ├── 图片 Bitmap 的解压缩和编解码.png │ └── 逆世界.png ├── 71.OpenCV - 图片的几何变换 │ ├── 01.图片旋转.wmv │ ├── 02.矩阵仿射变换.wmv │ ├── 03.reSize() 图片缩放.wmv │ ├── 04.remap 重映射 .wmv │ └── 笔记和源码 │ ├── 71. OpenCV - 图片的几何变换.mht │ └── NDK_Day71_AS.rar ├── 72.OpenCv - 封装 java 层 sdk 模型 │ ├── 01.苏宁体育面试题讲解.wmv │ ├── 02.NDK 学到什么程度,该怎么学?.wmv │ ├── 03.如何封装 java 层 sdk 模型.wmv │ ├── 04.动手封装 Opencv 的 Mat.java 对象.wmv │ ├── 05.Java 和 C++ 的回收机制.wmv │ └── 源码和笔记 │ ├── 72. NDK 开发实战 - 封装 java 层 sdk 模型.mht │ └── NDK_Day72_AS.rar ├── 73.OpenCV - 手写直方图和直方均衡 │ ├── 01.知识回顾.wmv │ ├── 02.手写实现直方图计算.wmv │ ├── 03.手写实现归一化.wmv │ ├── 04.手写实现直方均衡.wmv │ └── 笔记和源码 │ ├── 73. OpenCV - 手写直方图和直方均衡.mht │ └── NDK_Day73_VS.rar ├── 74.NDK开发实战 - 实现人脸的美容效果(上) │ ├── 01.卷积模糊算法复杂度分析.wmv │ ├── 02.积分图算法介绍.wmv │ ├── 03.卷积模糊算法优化.wmv │ ├── 04.快速边缘保留算法.wmv │ └── 笔记和源码 │ ├── 01.积分图计算.png │ ├── 02.快速边缘保留算法.png │ ├── 03.局部方差公式推导.png │ └── NDK_Day74_VS.rar ├── 75.NDK开发实战 - 实现人脸的美容效果(下) │ ├── 01.皮肤区域检测.wmv │ ├── 02.皮肤区域融合.wmv │ ├── 03.边缘加强与模糊叠加.wmv │ └── 笔记和源码 │ ├── 75. OpenCV - 实现人脸的美容效果(下).mht │ └── NDK_Day75_VS.rar ├── 76.NDK开发实战 - 微信公众号二维码检测与识别 │ ├── 01.实现思路剖析.wmv │ ├── 02.算法流程分析.wmv │ ├── 03.手写实现.wmv │ ├── 04.如何优化.wmv │ └── 笔记和源码 │ ├── 76. NDK开发实战 - 微信公众号二维码检测与识别.mht │ └── NDK_Day76_VS.rar ├── 77.人脸识别 - HOG 和 LBP 特征检测 │ ├── 01. HOG 特征检测的实现原理.wmv │ ├── 02. 行人检测.wmv │ ├── 03.手写 LBP 特征算法.wmv │ ├── 04.haar 特征介绍.wmv │ └── 笔记和源码 │ ├── 77. 人脸识别 - HOG 和 LBP 特征检测.mht │ ├── Haar特征.png │ ├── NDK_Day77_AS.rar │ ├── hog特征.png │ ├── lbp.特征.png │ ├── lbp表达.png │ ├── peoples.png │ ├── 分网格的梯度方向直方图.png │ └── 块描述子.png ├── 78.人脸识别 - 实时人脸检测 │ ├── 01.相机实时检测人脸.wmv │ ├── 02.均值,方差与协方差.wmv │ ├── 03.特征值与特征向量.wmv │ ├── 04.PCA的降维原理与应用.wmv │ └── 笔记和源码 │ ├── 78. 人脸识别 - 级联分类器.mht │ ├── NDK_Day78_AS.rar │ └── NDK_Day78_VS.rar ├── 79.NDK开发实战 - 实时人脸检测和识别 │ ├── 01.样本训练.wmv │ ├── 02.实时识别人脸.wmv │ ├── 03.后续的安排.wmv │ └── 笔记和源码 │ ├── 79. NDK开发实战 - 实时人脸检测和识别.mht │ ├── NDK_Day78_AS.rar │ ├── OpenCV-android-sdk.rar │ ├── orl_faces.rar │ ├── 实时人脸检测.gif │ └── 实时人脸识别.gif ├── 80.音视频技术学习 - 启动篇 │ ├── 01.音视频基础知识.wmv │ ├── 02.视频播放的流程.wmv │ ├── 03.音视频编解码.wmv │ ├── 04.FFmpeg介绍.wmv │ └── 笔记和资料 │ ├── 80. 音视频技术学习 - 启动篇.mht │ ├── 视音频分析工具.rar │ └── 视音频播放流程.png ├── 81.linux 系统编程 - 命令基础,软件卸载与安装 │ ├── 01.linux常用快键键.wmv │ ├── 02.文件和文件夹操作.wmv │ ├── 03.用户与用户组.wmv │ ├── 04.搜索与查找.wmv │ ├── 05.软件安装流程.wmv │ ├── 06.压缩与解压缩.wmv │ └── 笔记与资料 │ ├── 81. linux 系统编程 - 命令基础,软件卸载与安装.mht │ ├── Xftp5.exe │ └── Xshell5.exe ├── 82.linux 系统编程 - 应用编译运行的工作过程 │ ├── 01.vim的三种工作模式.wmv │ ├── 02.vim常用命令.wmv │ ├── 03.gcc编译四个步骤.wmv │ ├── 04.动态库与静态库.wmv │ ├── 05.虚拟内存.wmv │ └── 笔记与源码 │ ├── 82. linux 系统编程 - 应用编译运行的工作过程.mht │ ├── vim三种工作模式.png │ ├── 动态库.png │ └── 虚拟内存布局图.png ├── 83.linux 内核编程 - 文件IO与文件描述符 │ ├── 01.系统调用.wmv │ ├── 02.文件描述符表.wmv │ ├── 03.stat与 lstat.wmv │ ├── 04.目录操作.wmv │ └── 笔记与源码 │ ├── 83. linux 内核编程 - 文件IO与文件描述符.mht │ ├── dir_operate.cpp │ ├── 文件描述符.png │ ├── 系统函数与普通函数.png │ └── 系统调用.png ├── 84.linux 内核编程 - 进程创建与进程管理 │ ├── 01. pcb 进程控制块.wmv │ ├── 02.内存映射.wmv │ ├── 03. fork 创建子进程.wmv │ ├── 04.父子进程共享.wmv │ ├── 05.回收进程.wmv │ ├── 06.监听 APP 应用被卸载.wmv │ └── 笔记和源码 │ ├── 84. linux 内核编程 - 进程创建与进程管理.mht │ ├── fork函数.png │ └── 内存映射.png ├── 85.linux 内核编程 - IPC 进程间通信 │ ├── 01.进程间通信的本质.wmv │ ├── 02.管道.wmv │ ├── 03.信号通信的原理.wmv │ ├── 04.共享映射区通信.wmv │ ├── 05.mmap的实现原理.wmv │ └── 笔记和源码 │ ├── 85. linux 内核编程 - IPC 进程间通信.mht │ ├── mmap_ipc_1.cpp │ ├── mmap_ipc_2.cpp │ ├── mmap的实现原理.png │ ├── 管道.png │ ├── 管道的通信机制.png │ └── 进程间通信.png ├── 86.linux 内核编程 - 线程与多线程同步 │ ├── 01.线程的创建与销毁.wmv │ ├── 02.回收线程.wmv │ ├── 03.分离线程.wmv │ ├── 04.生产者与消费者.wmv │ └── 笔记和源码 │ ├── 86. linux 内核编程 - 线程与多线程同步.mht │ ├── binder驱动.png │ ├── thread1.cpp │ └── thread_comm.cpp ├── 87.CMake 语法 - 自动编译和链接 │ ├── 01.Makefile、CMake 与 Shell 之间的联系.wmv │ ├── 02.Makefile 的一个规则.wmv │ ├── 03.Makefile 的两个函数.wmv │ ├── 04.Makefile 的三个自动变量.wmv │ ├── 05.Cmake 的安装与简介.wmv │ └── 笔记与源码 │ ├── 87. CMake 语法 - 自动编译和链接.mht │ ├── GNU_makefile中文手册.pdf │ ├── Xftp5.exe │ ├── cmake 实战.pdf │ ├── cmake-3.14.3.tar.gz │ ├── m1 │ │ ├── Makefile │ │ ├── add.cpp │ │ ├── div.cpp │ │ ├── hello.cpp │ │ └── mul.cpp │ ├── m2 │ │ ├── Makefile │ │ └── sub.cpp │ └── m3 │ ├── Makefile │ └── hello.cpp ├── 88.CMake 语法 - 详解 CMakeLists.txt │ ├── 01.CMake 安装问题补充 .wmv │ ├── 02.构建生成 .so 动态库.wmv │ ├── 03.链接外部动态库与头文件.wmv │ ├── 04.编写基于 FFmpeg 开发的 CmakeLists.wmv │ └── 笔记与源码 │ └── 88. CMake 语法 - 详解 CMakeLists.mht ├── 89.Shell 脚本 - 详解基础语法 │ ├── 01.自定义变量与环境变量.wmv │ ├── 02.位置参数变量与预定义变量.wmv │ ├── 03.条件判断.wmv │ ├── 04.流程控制语句.wmv │ └── 笔记与源码 │ ├── 01.sh │ ├── 02.sh │ ├── 03.sh │ ├── 04.sh │ ├── 05.sh │ ├── 06.sh │ ├── 07.sh │ ├── 89. Shell 脚本 - 详解基础语法.mht │ └── Linux命令行与shell脚本编程大全.第3版.pdf ├── 90.Shell 脚本 - 自己动手编译 FFmpeg │ ├── 01.CMake 交叉编译 Android 动态库.wmv │ ├── 02.配置 NDK 环境.wmv │ ├── 03.手写 FFmpeg 编译脚本.wmv │ ├── 04.编译参数传递详解.wmv │ ├── 05.运行调试视音频解码.wmv │ └── 笔记与源码 │ ├── configure_help.txt │ ├── ffmpeg-3.3.9.tar.gz │ └── ffmpeg_build.sh ├── 91.FFmpeg - 打造一款万能的音乐播放器 │ ├── 01.效果演示.wmv │ ├── 02.获取 Meta 信息.wmv │ ├── 03.解码音频数据.wmv │ ├── 04.AudioTack 播放音频的原理.wmv │ ├── 05.播放pcm数据.wmv │ ├── 06.内存上涨问题分析.wmv │ └── 笔记和源码 │ ├── 91. FFmpeg - 打造一款万能的音乐播放器.mht │ ├── MusicPlayer.rar │ └── NDK_Day03.rar ├── 92.FFmpeg - 多线程解码播放 │ ├── 01.内存上涨问题分析解决.wmv │ ├── 02.音频重采样.wmv │ ├── 03.添加错误回调到 Java.wmv │ ├── 04.多线程解码播放.wmv │ └── 笔记和源码 │ ├── 92. FFmpeg - 多线程解码播放.mht │ └── MusicPlayer.rar ├── 93. FFmpeg - OpenSLES 播放音频数据 │ ├── 01.JNIEnv 子线程回调 Java 问题.wmv │ ├── 02.OpenSLES 播放音频原理分析.wmv │ ├── 03.OpenSLES 播放音频数据.wmv │ ├── 04.抽取准备方法.wmv │ ├── 05.整理代码架构.wmv │ └── 笔记与源码 │ ├── 93. FFmpeg - OpenSLES 播放音频数据.mht │ ├── MusicPlayer.rar │ └── OpenSLES_Study.rar ├── 94. FFmpeg - 线程队列边解码边播放 │ ├── 01.编译错误解决.wmv │ ├── 02.添加准备完毕回调.wmv │ ├── 03.用队列边解码边播放.wmv │ ├── 04.再次整理代码架构.wmv │ ├── 05.所有功能代码走读.wmv │ └── 笔记与源码 │ ├── 94. FFmpeg - 线程队列边解码边播放.mht │ └── MusicPlayer.rar ├── 95.FFmpeg - Android 视频播放器 │ ├── 01. 整合音乐播放器项目.wmv │ ├── 02.OpenGLES 渲染视频.wmv │ ├── 03.界面的渲染流程.wmv │ ├── 04.SurfaceView 渲染视频.wmv │ ├── 05.下节课的安排.wmv │ └── 笔记与源码 │ ├── 95. FFmpeg - Android 视频播放器.mht │ ├── NDK_Day03.rar │ ├── VideoPlayer.rar │ └── 页面渲染流程.png ├── 96.FFmpeg - 音视频同步 │ ├── 01.调整音乐播放器项目架构.wmv │ ├── 02.模板模式整合视频解码.wmv │ ├── 03.视音频同步的思想.wmv │ ├── 04.实现视音频同步.wmv │ └── 笔记与源码 │ ├── 96. FFmpeg - 音视频同步.mht │ ├── VideoPlayer.rar │ └── 视音频同步.png ├── 97.FFmpeg - Android 直播推拉流 │ ├── 01.自己动手搭建流媒体服务器.wmv │ ├── 02.配置流媒体环境.wmv │ ├── 03.集成 RTMP 推流源码.wmv │ ├── 04.初始化 RTMP 推流.wmv │ ├── 05.回调 Java 层监听初始化状态.wmv │ └── 笔记和源码 │ ├── 97. FFmpeg - Android 直播推拉流.mht │ ├── LivePush.rar │ ├── OpenGLES.rar │ ├── ffmpeg-20190706-feade2b-win64-static.rar │ └── rtmpdump.rar
    • 781